﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DTO;
using BLL;

namespace GUI
{
    public partial class SanPham : System.Web.UI.Page
    {
        #region Khai báo
        private SanPhamBLL spBLL;
        private List<SanPhamDTO> lstSP;
        private List<GioHangDTO> gioHang;
        private NhaSanXuatBLL nsxBLL;
        private NhaSanXuatDTO nsxDTO;
        private HinhAnhBLL haBLL;
        private HinhAnhDTO haDTO;
        #endregion

        #region Page_Load
        protected void Page_Load(object sender, EventArgs e)
        {
            //if (!IsPostBack)
            //{
            string action = Request.QueryString["action"];

            if (action != null) // Có query string
            {
                if (action.Equals("view"))
                {
                    string ma = Request.QueryString["group"];
                    this.LoadDuLieu(ma);
                }
                else if (action.Equals("timkiem"))
                {
                    CommonBLL cmBLL = new CommonBLL();
                    lstSP = new List<SanPhamDTO>();
                    spBLL = new SanPhamBLL();
                    int sosanphamtrentrang = cmBLL.laySoSanPhamTrenTrang();
                    string tukhoa = Request.QueryString["tukhoa"].ToString();
                    lstSP = spBLL.timKiemSanPham(tukhoa);
                    if (lstSP.Count == 0)
                    {
                        lblthongbao.Visible = true;
                        HyperLinkQuayVe.Visible = true;

                    }
                    else
                    {
                        loadSanPham(lstSP, sosanphamtrentrang);
                    }
                }

                //}

            }
            else // Không có query string
            {
                // Load tất cả sản phẩm lên Datalist
                this.LoadDuLieu();
            }
        }
        #endregion

        #region LoadDuLieu
        private void LoadDuLieu()
        {
            spBLL = new SanPhamBLL();
            lstSP = new List<SanPhamDTO>();

            try
            {
                lstSP = spBLL.GetListSanPham();
                DatalistDanhSachSanPham.DataSource = lstSP;
                DatalistDanhSachSanPham.DataBind();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        #endregion

        #region LoadDuLieuTheoMaSanPham
        private void LoadDuLieu(string ma)
        {
            spBLL = new SanPhamBLL();
            lstSP = new List<SanPhamDTO>();

            try
            {
                lstSP = spBLL.GetListSanPhamTheoDanhMuc(ma);
                DatalistDanhSachSanPham.DataSource = lstSP;
                DatalistDanhSachSanPham.DataBind();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        #endregion

        #region LoadNhaSanXuat
        protected string LoadNhaSanXuat(object obj)
        {
            // Dựa vào mã loại  nhân viên để lấy ra cái tên nhân viên
            nsxBLL = new NhaSanXuatBLL();
            nsxDTO = new NhaSanXuatDTO();

            string _result = (string)obj;
            nsxDTO = nsxBLL.GetNhaSanXuat(_result);
            return nsxDTO.TenNhaSanXuat;
        }
        #endregion

        #region LoadHinhAnh
        protected string LoadHinhAnh(object obj)
        {
            haBLL = new HinhAnhBLL();
            haDTO = new HinhAnhDTO();

            string _result = (string)obj;
            haDTO = haBLL.GetHinhAnhMacDinh(_result);
            if (haDTO.TenHinhAnh == null)
                return "Home/images/no_image.jpg";
            return haDTO.TenHinhAnh;
        }
        #endregion

        #region loadSanPham
        public void loadSanPham(List<SanPhamDTO> lst, int sosanpham)
        {
            CollectionPager1.MaxPages = 1000;
            CollectionPager1.PageSize = sosanpham; // số items hiển thị trên một trang.
            CollectionPager1.DataSource = lst;
            CollectionPager1.BindToControl = DatalistDanhSachSanPham;
            DatalistDanhSachSanPham.DataSource = CollectionPager1.DataSourcePaged;
            DatalistDanhSachSanPham.DataBind();

        }
        #endregion

        #region DatalistDanhSachSanPham_ItemCommand
        protected void DatalistDanhSachSanPham_ItemCommand(object source, DataListCommandEventArgs e)
        {
            try
            {
                if (e.CommandName.Equals("them"))
                {
                    gioHang = new List<GioHangDTO>();
                    string masp = (string)e.CommandArgument;

                    if (Session["GioHang"] != null)
                    {
                        gioHang = (List<GioHangDTO>)Session["GioHang"];
                    }
                    themGioHang(masp, gioHang);
                    Session["GioHang"] = gioHang;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        #endregion

        #region themGioHang
        public void themGioHang(string masp, List<GioHangDTO> lstGioHang)
        {

            bool kq = false;
            int _n = lstGioHang.Count;
            for (int i = 0; i < _n; i++)
            {
                GioHangDTO spGioHang = (GioHangDTO)gioHang[i];
                if (spGioHang.MaSanPham == masp) // san pham da co trong gio hang
                {
                    lstGioHang[i].SoLuong += 1; // Có sp roy thì chỉ tăng số lượng sản phẩm đó trong giỏ hàng lên

                    kq = true;
                    break;
                }
            }

            if (kq == false) // san pham dua vao khong co trong gio hang
            {
                SanPhamBLL spBLL = new SanPhamBLL();
                SanPhamDTO sp = new SanPhamDTO();
                sp = spBLL.GetSanPham(masp);


                // Gán dữ liệu lại cho GioHangDTO
                GioHangDTO spGioHang = new GioHangDTO();

                spGioHang.MaSanPham = sp.MaSanPham;
                spGioHang.TenSanPham = sp.TenSanPham;
                spGioHang.SoLuong = 1;
                spGioHang.GiaBan = sp.GiaBan;

                lstGioHang.Add(spGioHang);
            }
        }
        #endregion

    }
}